const fs = require('fs')

let ws = fs.createWriteStream('test.txt', {
  highWaterMark: 3
})

let flag = ws.write('1')
console.log(flag)

flag = ws.write('2')
console.log(flag)

// flag为false并不意味着数据不能被写入
// flag控制的是上游数据生产者
// 1. 第一次write方法直接把数据写入文件
// 2. 第二次开始write方法把数据写入缓存
// 3. 生产速度和消费速度是不一样的，一般生产速度要比消费速度快很多
// 4. 根据水位线属性highWaterMark，这里第三次write时，消费速度跟不上生产速度了，虽然并不意味着数据不能被写入，但也需要返回false以示警告。
// 5. 当产生警告时，应当将可读流的模块改为暂停模式，生产者暂停之后，消费者会慢慢消化它内部缓存中的数据，直到可以再次被执行写入操作
// 6. 缓冲区可以继续写入数据时，如何让生产者知道? drain事件
flag = ws.write('3')
console.log(flag)
// true
// true
// false

ws.on('drain',()=>{
  console.log('drain事件')
})
